<?php
namespace App\Api\Services;

class BankCard
{
    public static function bankCardAuthentication($bankcard,$idcard,$name,$phone)
    {
        // 云市场分配的密钥Id
        $secretId = config('bankcard.secretId');
        // 云市场分配的密钥Key
        $secretKey = config('bankcard.secretKey');
        $source = 'market';

        // 签名
        $datetime = gmdate('D, d M Y H:i:s T');
        $signStr = sprintf("x-date: %s\nx-source: %s", $datetime, $source);
        $sign = base64_encode(hash_hmac('sha1', $signStr, $secretKey, true));
        $auth = sprintf('hmac id="%s", algorithm="hmac-sha1", headers="x-date x-source", signature="%s"', $secretId, $sign);

        // 请求方法
        $method = 'GET';
        // 请求头
        $headers = array(
            'X-Source' => $source,
            'X-Date' => $datetime,
            'Authorization' => $auth,

        );
        // 查询参数
        $queryParams = [
            'bankcard' => $bankcard,
            'idcard' => $idcard,
            'mobile' => $phone,
            'name' => $name
        ];
        // body参数（POST方法下）
        $bodyParams = [

        ];
        // url参数拼接
        $url = 'https://service-repo3dsb-1256140209.ap-shanghai.apigateway.myqcloud.com/release/bankcard4_c/get';
        if (count($queryParams) > 0) {
            $url .= '?' . http_build_query($queryParams);
        }

        $ch = curl_init();
        curl_setopt($ch, CURLOPT_URL, $url);
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
        curl_setopt($ch, CURLOPT_TIMEOUT, 60);
        curl_setopt($ch, CURLOPT_CUSTOMREQUEST, $method);
        curl_setopt($ch,CURLOPT_HTTPHEADER,$headers);
        curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
        curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE);
        curl_setopt($ch, CURLOPT_HTTPHEADER, array_map(function ($v, $k) {
            return $k . ': ' . $v;
        }, array_values($headers), array_keys($headers)));
        if (in_array($method, array('POST', 'PUT', 'PATCH'), true)) {
            curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($bodyParams));
        }

        $data = curl_exec($ch);
        if (curl_errno($ch)) {
            return "Error: " . curl_error($ch);
        } else {
            return $data;
        }
    }
}